// Room 5: Boulders

#include "defines.txt"
#define temp v255
#define score_music_completed f255
#define wave1_obj o1
#define wave2_obj o2
#define wave3_obj o3
#define wave4_obj o4
#define wave5_obj o5
#define wave6_obj o6
#define wave7_obj o7
#define wave8_obj o8
#define bottle_obj o9

if (new_room) {
  load.pic(room_no);
  draw.pic(room_no);
  discard.pic(room_no);

  load.sound(score_music);

  load.view(50);
  load.view(51);

  animate.obj(wave1_obj);
  set.view(wave1_obj, 50);
  position(wave1_obj, 29, 119);
  set.priority(wave1_obj, 4);
  temp = 4;
  cycle.time(wave1_obj, temp);
  ignore.objs(wave1_obj);
  ignore.blocks(wave1_obj);
  draw(wave1_obj);

  animate.obj(wave2_obj);
  set.view(wave2_obj, 50);
  set.loop(wave2_obj, 1);
  position(wave2_obj, 17, 167);
  set.priority(wave2_obj, 4);
  cycle.time(wave2_obj, temp);
  ignore.objs(wave2_obj);
  ignore.blocks(wave2_obj);
  draw(wave2_obj);

  animate.obj(wave3_obj);
  set.view(wave3_obj, 50);
  set.loop(wave3_obj, 2);
  position(wave3_obj, 35, 150);
  set.priority(wave3_obj, 4);
  cycle.time(wave3_obj,temp);
  ignore.objs(wave3_obj);
  ignore.blocks(wave3_obj);
  draw(wave3_obj);

  animate.obj(wave4_obj);
  set.view(wave4_obj, 50);
  set.loop(wave4_obj, 3);
  position(wave4_obj, 90, 110);
  set.priority(wave4_obj, 4);
  cycle.time(wave4_obj,temp);
  ignore.objs(wave4_obj);
  ignore.blocks(wave4_obj);
  draw(wave4_obj);

  animate.obj(wave5_obj);
  set.view(wave5_obj, 50);
  set.loop(wave5_obj, 4);
  position(wave5_obj, 134, 82);
  set.priority(wave5_obj, 4);
  cycle.time(wave5_obj, temp);
  ignore.objs(wave5_obj);
  ignore.blocks(wave5_obj);
  draw(wave5_obj);

  animate.obj(wave6_obj);
  set.view(wave6_obj, 50);
  set.loop(wave6_obj, 5);
  position(wave6_obj, 150, 131);
  set.priority(wave6_obj, 4);
  temp = 8;
  cycle.time(wave6_obj, temp);
  ignore.objs(wave6_obj);
  ignore.blocks(wave6_obj);
  draw(wave6_obj);

  animate.obj(wave7_obj);
  set.view(wave7_obj, 51);
  position(wave7_obj, 89, 159);
  set.priority(wave7_obj, 4);
  cycle.time(wave7_obj, temp);
  ignore.objs(wave7_obj);
  ignore.blocks(wave7_obj);
  draw(wave7_obj);

  animate.obj(wave8_obj);
  set.view(wave8_obj, 51);
  set.loop(wave8_obj, 1);
  position(wave8_obj, 41, 167);
  set.priority(wave8_obj, 4);
  cycle.time(wave8_obj, temp);
  ignore.objs(wave8_obj);
  ignore.blocks(wave8_obj);
  draw(wave8_obj);

  if (obj.in.room(sealed_bottle, room_no)) {
    load.view(52);
    animate.obj(bottle_obj);
    set.view(bottle_obj, 52);
    position(bottle_obj, 94, 127);
    temp = 20;
    cycle.time(bottle_obj, temp);
    observe.objs(bottle_obj);
    draw(bottle_obj);
  }

  if (prev_room_no == stream) {
    position(ego, 95, 166);
  }

  load.view(0);
  load.view(1);
  load.view(2);
  load.view(3);

  draw(ego);
  show.pic();
}

if (ego_on_water) {
  set.view(ego, 1);
}
else {
  set.view(ego, 0);
}
if ((posn(ego, 99, 149, 99, 152) || posn(ego, 71, 149, 92, 156))) {
  set.view(ego, 1);
}
if (ego_touching_signal_line) {
  set.view(ego, 2);
}
else {
  if ((posn(ego, 0, 39, 49, 167) || posn(ego, 50, 39, 65, 152) || posn(ego, 66, 39, 159, 142))) {
    set.view(ego, 3);
  }
}

if ((said("look") || said("look", "beach"))) {
  print("Large boulders block your passage east. The sea stretches into the horizon.");
}

if ((said("look", "object") ||
     said("look", "object", "sea") ||
     said("look", "object", "water", "rol") ||
     said("look", "water", "object", "rol") ||
     said("look", "object", "floating", "rol") ||
     said("look", "floating", "object", "rol"))) {
  if (obj.in.room(sealed_bottle, room_no)) {
    if (posn(ego, 82, 12, 99, 130)) {
      print("The object floating in the water seems to be a bottle.");
    } else {
      print("You see something floating in the water. From your current vantage point, you're unable to tell what it is.");
    }
  }
  else {
    reset(input_parsed);
  }
}

if ((said("look", "bottle", "sea") ||
     said("look", "bottle", "floating", "rol") ||
     said("look", "floating", "bottle", "rol") ||
     said("look", "bottle", "water", "rol") ||
     said("look", "water", "bottle", "rol"))) {
  if (!has(sealed_bottle) && !has(empty_bottle)) {
    print("Pick it up first.");
  }
  else {
    print("The bottle is no longer floating in the water since you picked it up.");
  }
}

if (said("look", "bottle")) {
  if (!has(sealed_bottle) && !has(empty_bottle)) {
    print("Pick it up first.");
  }
  else {
    reset(input_parsed);
  }
}

if ((said("get", "object") ||
     said("get", "object", "sea") ||
     said("get", "object", "water", "rol") ||
     said("get", "water", "object", "rol") ||
     said("get", "object", "floating", "rol") ||
     said("get", "floating", "object", "rol"))) {
  if (obj.in.room(sealed_bottle, room_no)) {
    if (posn(ego, 82, 12, 99, 130)) {
      print("You pick up the object. On closer inspection you see that it is a bottle.");
      get(sealed_bottle);
      erase(bottle_obj);
      score += 1;
      sound(score_music, score_music_completed);
    } else {
      print("You're not close enough.");
    }
  }
  else {
    reset(input_parsed);
  }
}

if ((said("get", "bottle") ||
     said("get", "bottle", "sea") ||
     said("get", "bottle", "water", "rol") ||
     said("get", "water", "bottle", "rol") ||
     said("get", "bottle", "floating", "rol") ||
     said("get", "floating", "bottle", "rol"))) {
  if (obj.in.room(sealed_bottle, room_no)) {
    if (posn(ego, 82, 12, 99, 130)) {
      print("You pick up the bottle.");
      get(sealed_bottle);
      erase(bottle_obj);
      score += 1;
      sound(score_music, score_music_completed);
    } else {
      print("You're not close enough.");
    }
  }
  else {
    print("You see no bottle which you could acquire at this moment.");
  }
}

if (ego_edge_code == bottom_edge) {
  new.room(stream);
}

return();